package com.fintech.third.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

public interface DecisionNeedDataMapper {
	public Map<String,Object> selectStrategyApplyInfo(String loanId);
	public Map<String,Object> selectMxBasicInfoCheckItems(String loanId);
	public Map<String,Object> selectMxFriendCircleInfo(String loanId);
	public Map<String,Object> selectMxConsumptionAnalysis(String loanId);
	public Map<String,Object> selectMxAccountBaseInfo(String loanId);
	public Map<String,Object> selectMxCallAnalysis(String loanId);
	
	public Map<String,Object> selectMxReserveFund(String loanId);
	
	public Map<String,Object> selectBrAcctChangeMonth(String loanId);
	public Map<String,Object> selectBrAcctChangeMonthDebit(String loanId);
	public Map<String,Object> selectBrAcctChangeMonthCredit(String loanId);
	public Map<String,Object> selectBrStability(String loanId);
	
	public Map<String,Object> selectBrApplyLoanStrM1(String loanId);
	public Map<String,Object> selectBrSpeciailistId(String loanId);
	public Map<String,Object> selectBrSpeciailistCell(String loanId);
	public Map<String,Object> selectBrSpeciailistImCell(String loanId);
	public Map<String,Object> selectBrSpeciailistGid(String loanId);
	public Map<String,Object> selectBrApplyLoanStrFlst(String loanId);
	
	public Map<String,Object> selectBrScore(String loanId);
	
	public Map<String,Object> selectBrPayConsumption(String loanId);
	
	public Map<String,Object> selectMiddleBrAccountchangemonth(String loanId);
	
	public String selectBankCardThreeBase(Map<String,Object> map);
	public String selectBankCardFourBase(Map<String,Object> map);
	/**
	 * 
	 * @Title: selectFourBaseByCardAndIdno   
	 * @Description:  根据身份证、卡号、类型查询四要素表
	 * @param:      
	 * @return: String      
	 * @throws
	 */
	public String selectFourBaseByCardAndIdno(Map<String,Object> map);
	
	//lvgb  new
	public Map<String,Object> newselectBrSpeciailistGid(String loanId);
	public Map<String,Object> newselectBrSpeciailistCell(String loanId);
	public Map<String,Object> newselectBrSpeciailistId(String loanId);
	public Map<String,Object> newselectBrSpeciailistImCell(String loanId);
	
	public Map<String,Object> selectPyEntrepriseBasicInfo(String loanId);
	public Map<String,Object> selectPyEntrepriseShInfo(String loanId);
	public Map<String,Object> selectQhRiskLevel(String loanId);
	List<Map<String,Object>> selectQhRiskLevelnew(String loanId);//lgb
	List<Map<String,Object>> selectQhLoanRecordnew(String loanId);//lgb
	
	public Map<String,Object> selectQhLoanRecord(String loanId);
	public String selectIdCardVerifyResult(String loanId);
	public String selectFaceRecognitionScore(String loanId);
	
	 List<Map<Integer,Object>> selectOverdue(String loanId);
	 List<Map<Integer,Object>> selectOverdueNoCondition(String loanId);
	
	 
	 BigDecimal selectOverdueMoney(Map<String,Object> map);
	 Long selectOverdueMoneyCount(String loanId);
	 List<String> selectLoanType(String loanId);
	 Long selectQueryDetail(String loanId);

	public List<String> selectPbcFiveLevelBad(String loanId);

	public List<String> selectPbcAcountBad(String loanId);
	public List<String> selectCreditPayment(String loanId);
	List<BigDecimal> selectLoanRental(String loanId);
	BigDecimal selectAvgDelqAmount(String loanId);
	Integer selectLoanMinDate(String loanId);
	
	BigDecimal scCreditUseRat(String loanId);
	BigDecimal scCreditLimitAvg(String loanId);
	BigDecimal scCreditLast12mDelqCnt(String loanId);
	Integer scLast6mLoanRequCnt(String loanId);
	Integer scLast6mCardRequCnt(String loanId);
	Integer scCreditAcctMobAvg(String loanId);
	Integer scLastMonth12DelqCnt(String loanId);
	//百融信用卡资金流水
	public Map<String,Object> selectBrCreditAccountFlow(String loanId);
	//百融储蓄卡资金流水
	public Map<String,Object> selectBrDebitAccountFlow(String loanId);

	public Integer scMaxMobCc(String loanId);

	public Integer scExceptHouseLoanCount(String loanId);

	public String selectMxCarrierAccountBaseInfoVerify(String loanId);
	
	Map<String, Object> selectPbcReportByLoanId(String loanId);
	
	Integer selectPbcMidQueryCount2mByLoanId(String loanId);
	Integer selectPbcMidQueryCount6mByLoanId(String loanId);
	Map<String, Object>  selectPbcMidHas5wLoanFlag(String loanId);
	
	Map<String,Object> selectBrRule(String loanId);
	Map<String,Object> selectBrIr(String loanId);
	public Map<String,Object> selectQhRiskLevelOffline(String loanId);

	public String getPbcMid3wLoanFlag(String loanId);
	
	Map<String, Object>  getOverdueAmount(String loanId);
	Map<String, Object>  selectTongDunScore(String loanId);
	
	/**
	 * 获取复贷标签的数据
	 * @param loanId
	 * @return
	 */
	Map<String, Object> getReloanTagData(String loanId);

	public Map<String, Object> selectBrScoreNew(String loanId);
	
	/*
	 * 百融数据查询（新）
	 */
	//特殊名单
	public Map<String,Object> latestselectBrSpeciailistId(String loanId);//百融数据.特殊名单.按身份证
	public Map<String,Object> latestselectBrSpeciailistCell(String loanId);//百融数据.特殊名单.按手机号
	public Map<String,Object> latestselectBrSpeciailistImCell(String loanId);//百融数据.特殊名单.按联系人手机
	public Map<String,Object> latestselectBrSpeciailistGid(String loanId);//百融数据.特殊名单.百融标识查询
	//百融多次申请V2
	public Map<String,Object>	selectIntBrApplyloanstrD7(String loanId);//百融数据.百融多次申请V2.按身份证和手机号查询近7天记录
	public Map<String,Object>	selectIntBrApplyloanstrD15(String loanId);//百融数据.百融多次申请V2.按身份证和手机号查询近15天记录
	public Map<String,Object>	selectIntBrApplyloanstrM1(String loanId);//百融数据.百融多次申请V2.按身份证和手机号查询近1个月天记录
	public Map<String,Object>	selectIntBrApplyloanstrM3(String loanId);//百融数据.百融多次申请V2.按身份证和手机号查询近3个月天记录
	public Map<String,Object>	selectIntBrApplyloanstrM6(String loanId);//百融数据.百融多次申请V2.按身份证和手机号查询近6个月天记录
	public Map<String,Object>	selectIntBrApplyloanstrFlst(String loanId);//百融数据.百融多次申请V2.按身份证和手机号查询距离最早记录
	//多次申请核查
	public Map<String,Object>	selectIntBrApplyloanBank(String loanId);//百融数据.多次申请核查.近3.6.12个月百融标识在百融银合作机构申请次数
	public Map<String,Object>	selectIntBrApplyloanNotbank(String loanId);//百融数据.多次申请核查.近3.6.12个月百融标识在百融非银合作机构申请次数

	//获取决策数据
	public Map<String,Object>	getDecisionGeneralData(String loanId);
	

	/**
	 *  客户基本信息查询 >
	 * @param loanId
	 * @return
	 */
	Map<String, Object> selectBasicCustomerInfo(String loanId);
	
	/**
	 *  客户工作信息 >
	 * @param loanId
	 * @return
	 */
	Map<String, Object> selectCustomerWorkInfo(String loanId);
	
	/**
	 *  产品申请信息 >
	 * @param loanId
	 * @return
	 */
	Map<String, Object> selectProductApplyInfo(String loanId);
	
	

	/**
	 *  集澳数据查询 >
	 * @param loanId
	 * @return
	 */
	Map<String, Object> selectJAoBasicData(String loanId);
	
	/**
	 * 集澳基本数据查询 >
	 * @param loanId
	 * @return
	 */
	List<Map<String, Object>> selectJAoData(String loanId);
	
	/**
	 *  贷记卡最大额度使用率  >
	 * @param loanId
	 * @return
	 */
	Double selectScNetUtlCcMax(String loanId);
	
	/**
	 * 账户平均账龄>
	 * @param loanId
	 * @return
	 */
	Integer selectScAvgMob(Map<String, Object> map);
	
	/**
	 *   芝麻信用欺诈关注清单>
	 * @param loanId
	 * @return
	 */
	Map<String, Object> ziMaFraudOnListing(String loanId);
	
	/**
	 * 欺诈信息验证
	 * @param loanId
	 * @return
	 */
	Map<String, Object> ziMaFraudInformationValidation(String loanId);
	/**
	 * 中间变量数组>
	 * @param loanId
	 * @return
	 */
	List<Map<String, Object>> ziMaIntermediateVariable(String loanId);
	
	/**
	 *  芝麻是否匹配 
	 * @param loanId
	 * @return
	 */
	Map<String, Object> ziMaIsMatch(String loanId);
	
	/**
	 *  芝麻欺诈分
	 * @param loanId
	 * @return
	 */
	Map<String, Object> ziMaFraudScore(String loanId);
	
	
	 
	
	/**
	 *  查询上海资信数据>
	 * @param loanId
	 * @return
	 */
	Map<String, Object> getShangHaiZiXin(String loanId);
	
	/**
	 *  查询极光数据>
	 * @param loanId
	 * @return
	 */
	Map<String, Object> getJiGuang(String loanId);
	
	/**
	 * 获取芝麻欺诈数据跟评分
	 * @param loanId
	 * @return
	 */
	Map<String, Object> ziMaFraudScoreAndIsMatch(String loanId);
	
	
	//安卓设备sign信息
		public Map<String,Object> getSignAndroidInfo(String loanId);
		
		//IOS设备sign信息
		public Map<String,Object> getSignIosInfo(String loanId);
		
		//web sign信息
		public Map<String,Object> getSignWebInfo(String loanId);
		
		//安卓借款设备
		public Map<String,Object> getLoanAndroidInfo(String loanId);
		
		//IOS借款设备
		public Map<String,Object> getLoanIosInfo(String loanId);
		
		//web借款设备
		public Map<String,Object> getLoanWebInfo(String loanId);
		
		
		//提现设备IOS
		public Map<String,Object> getCrashIosInfo(String loanId);
		
		//提现设备web
		public Map<String,Object> getCrashWebInfo(String loanId);
		
		//提现设备Android
		public Map<String,Object> getCrashAndroidInfo(String loanId);
		
		//注册设备异常数据
		public Map<String,Object> getRegInfo(String loanId);
		

		//百融支付 Consumption assessment
		public Map<String,Object> getConsumpAssessment(String loanId);
		
		//payments
		public Map<String,Object> getPaymentsOfLevel(String loanId);
		//保单	
		public List<Map<String,Object>> getBanDanInfo(String loanId);
		
		//银行申请核查
		public Map<String,Object> getBankApplyCheck(String loanId);
		
		//非银行申请核查
		public Map<String,Object> getNotBankApplyCheck(String loanId);
		
		//获取芝麻信用评分
		public Map<String,Object> getZMScore(String loanId);

		public Map<String, Object> getSignWebInfoByMobile(String moblie);

		public Map<String, Object> getSignIosInfoByMobile(String moblie);

		public Map<String, Object> getSignAndroidInfoByMobile(String moblie);

		public Map<String, Object> getRegInfoByMobile(String moblie);

		public Map<String, Object> getLoanInfo(String loanId);
		
		public Map<String, Object> getSignInfoByMobile(String loanId);
		
		public Map<String, Object> getSignInfoByMobileForMall(String loanId);
		
		

		public List<Map<String, Object>> getRulesByLoanId(String loanId);
		
		/*public Map<String, Object> getBrEqcByLoanId(String loanId);
		
		public Map<String, Object> getBrEqslByLoanId(String loanId);
		
		public Map<String, Object> getBrEqinfoByLoanId(String loanId);*/
		// lvgb决策查询sql 
		public Map<String, Object> getBrJcinfoByLoanId(String loanId);
		
		public Map<String, Object> getBrJcequipmentspeciallist(String loanId);
		
		public Map<String, Object> getBrJcequipmentcheck(String loanId);
		
		public Map<String, Object> getBrJcequipmentinfo(String loanId);

		public Map<String, Object> getConsumpAssessmentNew(String loanIdInterfaceCode);

		public Map<String, Object> getSignInfoByMobileNew(String loanIdYK0008);

		public Map<String, Object> getRegInfoNew(String loanId);

		public Map<String, Object> getCrashIosInfoNew(String loanIdYK0009);

		public Map<String, Object> getCrashWebInfoNew(String loanId);

		public Map<String, Object> getCrashAndroidInfoNew(String loanId);

		public Map<String, Object> getLoanInfoNew(String loanIdBR0005);
		public Map<String, Object> selectTongDunOneMonth(String loanId);
		public Map<String, Object> selectTongDunSevenDay(String loanId);
		public Map<String, Object> selectTongDunThreeMonth(String loanId);
		

		/**
		 * desc:查询近六个月贷款申请笔数
		 * code:上海资信.贷款信息摘要.近六个月贷款申请笔数
		 * @param loanId
		 * @return
		 */
		Map<String,String> selectLoanPromptContent(@Param("loanId") String loanId);
		
		/**
		 * desc:查询累计逾期期数、最高逾期期数
		 * code:上海资信.贷款信息摘要.累计逾期期数、最高逾期期数
		 * @param loanId
		 * @return
		 */
		Map<String, Object> selectLoanOrderDetails(@Param("loanId") String loanId);
		
		/**
		 * desc:查询24月内各月还款状况
		 * code:上海资信.贷款信息摘要.24月内各月还款状况
		 * @param loanId
		 * @return
		 */
		Map<String,Object> selectMonthlyRepaymentStatus24(@Param("loanId") String loanId);
		
		/**
		 * desc:查询未结清贷款笔数、协定月还款、贷款余额
		 * code:上海资信.贷款信息摘要.未结清贷款笔数、协定月还款、贷款余额
		 * @param loanId
		 * @return
		 */
		Map<String, Object> selectLoanOrderInfo(@Param("loanId") String loanId);
		
		/**
		 * 获取决策鹏远节点  所需要的鹏远数据
		 * @param loanId
		 * @return
		 */
		public Map<String, Object> getPengYuanData(String loanId);
		
		/**
		 * 上海资信查询最近最高逾期期数
		 * @param loanId
		 * @return
		 */
		public Map<String, Object> getNfcsLoanOrderDetailsInfoRepayment(String loanId);
		
		/**
		 * 获取魔蝎运营商黑名单数据
		 * @param loanId
		 * @return
		 */
		public Map<String, Object>  getMxReportV3CheckBlackInfo(String loanId);
		public Map<String, Object> getCircleAnalysis(String loanId);
		
		Map<String, Object> getMxActiveDegreeDetail(String loanId);
		Map<String, Object> getMxActiveDegress(String loanId);
		List<Map<String, Object>> getMxBillsMonth(String loanId);
		Map<String, Object> getMxCallAnalysis(String loanId);
		Map<String, Object> getMxCallFamilyDetail(String loanId);
		Map<String, Object> getMxCallThirdPartyDetail(String loanId);
		Map<String, Object> getMxCallTimeDetail(String loanId);
		Map<String, Object> getMxFriendCircle(String loanId);
		List<Map<String, Object>> getMxCallLocationTop3(String loanId);
		List<Map<String, Object>> getMxCallNumTop3(String loanId);
		/**
		 * 取上海资信新增决策变量数据
		 * @param loanId
		 * @return
		 */
		Map<String, Object> selectShangHaiZxAddData(String loanId);
		Map<String, Object> selectShangHaiZxAddData1(String loanId);
		
		/**
		 * 取上海资信近6个月逾期次数
		 * @param loanId
		 * @return
		 */
		List<Map<String, Object>> selectShangHaiZxOverNum(String loanId);
		/**
		 * 上海资信.查询记录.最近6个月内的查询次数
		 * @param loanId
		 * @return
		 */
		Map<String, Object> selectShangHaiZxPromptInfo(String loanId);
		//==============获取征信报告.衍生变量 START ====
		//信息概要
	    Map<String, Object> selectIntBankGeneral(String loanId);
	    //贷款记录
		Map<String, Object> selectIntBankLoan(String loanId);
		//担保贷款
		Map<String, Object> selectIntBankAssure(String loanId);
		//贷记卡
		Map<String, Object> selectIntBankCredit(String loanId);
		//准贷记卡
		Map<String, Object> selectIntBankQuasi(String loanId);
		////查询记录
		Map<String, Object> selectIntBankQuery(String loanId);
		//其他担保类型
		Map<String, Object> selectIntBankKindsGuaranteeCount(String loanId);
	  //==============获取征信报告.衍生变量 END ====
		
		/**
		 * 根据手机号获取上海征信数据
		 * @param mobile
		 * @return
		 */
		public Map<String, Object> getShangHaiZiXinByMobile(String mobile);
		
		/**
		 * 查询百融多头借贷异常数据
		 * @param mobile
		 * @return
		 */
		public String getMultiToLoanByMobile(String mobile);
		
		/**
		 * 查询百融申请信息关联异常数据
		 * @param mobile
		 * @return
		 */
		public Map<String, Object> getApplyInfoRelationByMobeli(String mobile);
}
